/**
 * 
 */
package org.oproject.rmi.hessian.core.logger;

import java.text.MessageFormat;

import javax.servlet.http.HttpServletRequest;

import org.oproject.rmi.hessian.core.context.HessianContext;

import com.caucho.services.server.ServiceContext;

/**
 * <一句话功能/>
 * <功能描述/>
 * @author ahli
 * @date 2009-8-29
 */
public class LoggerUtil implements LogConstants 
{
	/**
	 * 获取当前线程日志ID，19位Long值。
	 * 如果createAble == true 或者 线程变量没有记录logID，那么系统会重新生成一个logID，并且保存到
	 * 线程变量中。否则系统会沿用当前线程ID。仅仅在程序入口，例如http请求入口filter中、定时任务启动
	 * 的时候重新设置logID，其他时候，都应该沿用既有的logid。
	 * @param createAble    是否要创建新的日志ID
	 */
	private static String getLogID(){
		if(null != HessianContext.getLocalID())
		{
			return HessianContext.getLocalID();
		}
		else
		{
			return null;
		}
	}
	
	/**
	 * 格式化日志信息
	 * @param moduleName
	 * @param resourceID
	 * @param appInfo
	 * @param isEncrypt
	 * @return
	 */
	public static String formInfo(String msg)
	{
		String logId = getLogID();
		String requestUrl = getRequestURL();
		if(null == logId || null == requestUrl)
		{
			return MessageFormat.format(LOG_INFO_FORMAT_NORMAL, msg);
		}
		else
		{
			return MessageFormat.format(LOG_INFO_FORMAT, 
					logId, requestUrl, msg);
		}
	}
	
	private static String getRequestURL()
	{
		HttpServletRequest request = (HttpServletRequest)ServiceContext.getContextRequest();
		if(null != request)
		{
			return request.getRequestURL().toString(); 
		}
		
		return null;
	}
}
